library(tidyverse)
library(openintro)
library(readxl)
library(plotly)
library("rnaturalearth")
library("rnaturalearthdata")
WHO_meta <- read_csv("WHO_metadata.csv", col_names = FALSE)
WHO_life_expectancy <- read_excel("WHOLifeExpectancy.xlsx", skip = 2)

Exercise 1

names(WHO_life_expectancy) <- c('country',
  'HALEbirth_Both sexes_2016', 'HALEbirth_Both sexes_2015', 'HALEbirth_Both sexes_2010', 'HALEbirth_Both sexes_2005', 'HALEbirth_Both sexes_2000', 'HALEbirth_Male_2016','HALEbirth_Male_2015', 'HALEbirth_Male_2010', 'HALEbirth_Male_2005', 'HALEbirth_Male_2000',
  'HALEbirth_Female_2016','HALEbirth_Female_2015', 'HALEbirth_Female_2010', 'HALEbirth_Female_2005', 'HALEbirth_Female_2000',
  'HALE60_Both sexes_2016', 'HALE60_Both sexes_2015', 'HALE60_Both sexes_2010', 'HALE60_Both sexes_2005', 'HALE60_Both sexes_2000',
  'HALE60_Male_2016', 'HALE60_Male_2015', 'HALE60_Male_2010', 'HALE60_Male_2005'
  , 'HALE60_Male_2000',
  'HALE60_Female_2016', 'HALE60_Female_2015', 'HALE60_Female_2010', 'HALE60_Female_2005', 'HALE60_Female_2000')

Exercise 2

WHO_life_expectancy <- WHO_life_expectancy %>%
  pivot_longer(cols = c('HALEbirth_Both sexes_2016', 'HALEbirth_Both sexes_2015', 'HALEbirth_Both sexes_2010', 'HALEbirth_Both sexes_2005', 'HALEbirth_Both sexes_2000', 'HALEbirth_Male_2016','HALEbirth_Male_2015', 'HALEbirth_Male_2010', 'HALEbirth_Male_2005', 'HALEbirth_Male_2000',
  'HALEbirth_Female_2016','HALEbirth_Female_2015', 'HALEbirth_Female_2010', 'HALEbirth_Female_2005', 'HALEbirth_Female_2000',
  'HALE60_Both sexes_2016', 'HALE60_Both sexes_2015', 'HALE60_Both sexes_2010', 'HALE60_Both sexes_2005', 'HALE60_Both sexes_2000',
  'HALE60_Male_2016', 'HALE60_Male_2015', 'HALE60_Male_2010', 'HALE60_Male_2005'
  , 'HALE60_Male_2000',
  'HALE60_Female_2016', 'HALE60_Female_2015', 'HALE60_Female_2010', 'HALE60_Female_2005', 'HALE60_Female_2000'), names_to = "type", values_to = "value") %>%
  separate(type, c("name", "sex", "year"), sep = "_") %>%
  pivot_wider(names_from = "name", values_from = "value") %>%
  mutate(HALEbirth = as.numeric(HALEbirth),
         HALE60 = as.numeric(HALE60)) %>%
  arrange(desc(year), country)
## Warning in mask$eval_all_mutate(quo): NAs introduced by coercion

## Warning in mask$eval_all_mutate(quo): NAs introduced by coercion
WHO_life_expectancy
## # A tibble: 2,745 x 5
##    country     sex        year  HALEbirth HALE60
##    <chr>       <chr>      <chr>     <dbl>  <dbl>
##  1 Afghanistan Both sexes 2016       53     11.3
##  2 Afghanistan Male       2016       52.1   10.9
##  3 Afghanistan Female     2016       54.1   11.7
##  4 Albania     Both sexes 2016       68.1   16.3
##  5 Albania     Male       2016       66.7   15.3
##  6 Albania     Female     2016       69.6   17.4
##  7 Algeria     Both sexes 2016       65.5   15.8
##  8 Algeria     Male       2016       65.4   15.7
##  9 Algeria     Female     2016       65.6   15.8
## 10 Angola      Both sexes 2016       55.8   13.6
## # ... with 2,735 more rows

Exercise 3

world_map <- ne_countries(scale = "medium", returnclass = "sf")

WHO_life_expectancy_2016 <- WHO_life_expectancy %>% 
  filter(year == "2016",
         sex == "Both sexes") 

combine <- left_join(WHO_meta , WHO_life_expectancy_2016, by = c("X3" = "country"))

combine_world <- left_join(world_map, combine, by = c("iso_a3" = "X2"))

Exercise 4

my_map_theme <- function(){
  theme(panel.background=element_blank(),
        axis.text=element_blank(),
        axis.ticks=element_blank(),
        axis.title=element_blank())
}
p <- combine_world %>%
  mutate(text = paste("<b>",admin,"</b>\nHealthy Life Expectancy:", HALEbirth)) %>%
  ggplot()+
  geom_sf(aes(fill=HALEbirth+runif(nrow(combine_world), min=0, max=0.0005), text=text), color="black") +
  scale_fill_continuous("Healthy Life\nExpectancy\nat Birth (years)", low= "red", high="blueviolet",breaks=c(45,55,65,75)) +
  labs(title = "Healthy Life Expectancy\nat Birth 2016") +
  my_map_theme()
## Warning: Ignoring unknown aesthetics: text
p

### Exercise 5

ggplotly(p, tooltip = "text") %>%
  style(hoveron = "fills")
LS0tDQp0aXRsZTogIlF1aXogMyINCmF1dGhvcjogIlNhbnlhcG9vbSBTaXJpamlyYWthcm4iDQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiDQpvdXRwdXQ6IG9wZW5pbnRybzo6bGFiX3JlcG9ydA0KLS0tDQoNCmBgYHtyIGxvYWQtcGFja2FnZXMsIG1lc3NhZ2U9RkFMU0V9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkob3BlbmludHJvKQ0KbGlicmFyeShyZWFkeGwpDQpsaWJyYXJ5KHBsb3RseSkNCmxpYnJhcnkoInJuYXR1cmFsZWFydGgiKQ0KbGlicmFyeSgicm5hdHVyYWxlYXJ0aGRhdGEiKQ0KV0hPX21ldGEgPC0gcmVhZF9jc3YoIldIT19tZXRhZGF0YS5jc3YiLCBjb2xfbmFtZXMgPSBGQUxTRSkNCldIT19saWZlX2V4cGVjdGFuY3kgPC0gcmVhZF9leGNlbCgiV0hPTGlmZUV4cGVjdGFuY3kueGxzeCIsIHNraXAgPSAyKQ0KYGBgDQoNCiMjIyBFeGVyY2lzZSAxDQoNCmBgYHtyfQ0KbmFtZXMoV0hPX2xpZmVfZXhwZWN0YW5jeSkgPC0gYygnY291bnRyeScsDQogICdIQUxFYmlydGhfQm90aCBzZXhlc18yMDE2JywgJ0hBTEViaXJ0aF9Cb3RoIHNleGVzXzIwMTUnLCAnSEFMRWJpcnRoX0JvdGggc2V4ZXNfMjAxMCcsICdIQUxFYmlydGhfQm90aCBzZXhlc18yMDA1JywgJ0hBTEViaXJ0aF9Cb3RoIHNleGVzXzIwMDAnLCAnSEFMRWJpcnRoX01hbGVfMjAxNicsJ0hBTEViaXJ0aF9NYWxlXzIwMTUnLCAnSEFMRWJpcnRoX01hbGVfMjAxMCcsICdIQUxFYmlydGhfTWFsZV8yMDA1JywgJ0hBTEViaXJ0aF9NYWxlXzIwMDAnLA0KICAnSEFMRWJpcnRoX0ZlbWFsZV8yMDE2JywnSEFMRWJpcnRoX0ZlbWFsZV8yMDE1JywgJ0hBTEViaXJ0aF9GZW1hbGVfMjAxMCcsICdIQUxFYmlydGhfRmVtYWxlXzIwMDUnLCAnSEFMRWJpcnRoX0ZlbWFsZV8yMDAwJywNCiAgJ0hBTEU2MF9Cb3RoIHNleGVzXzIwMTYnLCAnSEFMRTYwX0JvdGggc2V4ZXNfMjAxNScsICdIQUxFNjBfQm90aCBzZXhlc18yMDEwJywgJ0hBTEU2MF9Cb3RoIHNleGVzXzIwMDUnLCAnSEFMRTYwX0JvdGggc2V4ZXNfMjAwMCcsDQogICdIQUxFNjBfTWFsZV8yMDE2JywgJ0hBTEU2MF9NYWxlXzIwMTUnLCAnSEFMRTYwX01hbGVfMjAxMCcsICdIQUxFNjBfTWFsZV8yMDA1Jw0KICAsICdIQUxFNjBfTWFsZV8yMDAwJywNCiAgJ0hBTEU2MF9GZW1hbGVfMjAxNicsICdIQUxFNjBfRmVtYWxlXzIwMTUnLCAnSEFMRTYwX0ZlbWFsZV8yMDEwJywgJ0hBTEU2MF9GZW1hbGVfMjAwNScsICdIQUxFNjBfRmVtYWxlXzIwMDAnKQ0KDQpgYGANCg0KIyMjIEV4ZXJjaXNlIDINCg0KYGBge3J9DQpXSE9fbGlmZV9leHBlY3RhbmN5IDwtIFdIT19saWZlX2V4cGVjdGFuY3kgJT4lDQogIHBpdm90X2xvbmdlcihjb2xzID0gYygnSEFMRWJpcnRoX0JvdGggc2V4ZXNfMjAxNicsICdIQUxFYmlydGhfQm90aCBzZXhlc18yMDE1JywgJ0hBTEViaXJ0aF9Cb3RoIHNleGVzXzIwMTAnLCAnSEFMRWJpcnRoX0JvdGggc2V4ZXNfMjAwNScsICdIQUxFYmlydGhfQm90aCBzZXhlc18yMDAwJywgJ0hBTEViaXJ0aF9NYWxlXzIwMTYnLCdIQUxFYmlydGhfTWFsZV8yMDE1JywgJ0hBTEViaXJ0aF9NYWxlXzIwMTAnLCAnSEFMRWJpcnRoX01hbGVfMjAwNScsICdIQUxFYmlydGhfTWFsZV8yMDAwJywNCiAgJ0hBTEViaXJ0aF9GZW1hbGVfMjAxNicsJ0hBTEViaXJ0aF9GZW1hbGVfMjAxNScsICdIQUxFYmlydGhfRmVtYWxlXzIwMTAnLCAnSEFMRWJpcnRoX0ZlbWFsZV8yMDA1JywgJ0hBTEViaXJ0aF9GZW1hbGVfMjAwMCcsDQogICdIQUxFNjBfQm90aCBzZXhlc18yMDE2JywgJ0hBTEU2MF9Cb3RoIHNleGVzXzIwMTUnLCAnSEFMRTYwX0JvdGggc2V4ZXNfMjAxMCcsICdIQUxFNjBfQm90aCBzZXhlc18yMDA1JywgJ0hBTEU2MF9Cb3RoIHNleGVzXzIwMDAnLA0KICAnSEFMRTYwX01hbGVfMjAxNicsICdIQUxFNjBfTWFsZV8yMDE1JywgJ0hBTEU2MF9NYWxlXzIwMTAnLCAnSEFMRTYwX01hbGVfMjAwNScNCiAgLCAnSEFMRTYwX01hbGVfMjAwMCcsDQogICdIQUxFNjBfRmVtYWxlXzIwMTYnLCAnSEFMRTYwX0ZlbWFsZV8yMDE1JywgJ0hBTEU2MF9GZW1hbGVfMjAxMCcsICdIQUxFNjBfRmVtYWxlXzIwMDUnLCAnSEFMRTYwX0ZlbWFsZV8yMDAwJyksIG5hbWVzX3RvID0gInR5cGUiLCB2YWx1ZXNfdG8gPSAidmFsdWUiKSAlPiUNCiAgc2VwYXJhdGUodHlwZSwgYygibmFtZSIsICJzZXgiLCAieWVhciIpLCBzZXAgPSAiXyIpICU+JQ0KICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gIm5hbWUiLCB2YWx1ZXNfZnJvbSA9ICJ2YWx1ZSIpICU+JQ0KICBtdXRhdGUoSEFMRWJpcnRoID0gYXMubnVtZXJpYyhIQUxFYmlydGgpLA0KICAgICAgICAgSEFMRTYwID0gYXMubnVtZXJpYyhIQUxFNjApKSAlPiUNCiAgYXJyYW5nZShkZXNjKHllYXIpLCBjb3VudHJ5KQ0KDQpXSE9fbGlmZV9leHBlY3RhbmN5DQpgYGANCg0KIyMjIEV4ZXJjaXNlIDMNCg0KYGBge3J9DQp3b3JsZF9tYXAgPC0gbmVfY291bnRyaWVzKHNjYWxlID0gIm1lZGl1bSIsIHJldHVybmNsYXNzID0gInNmIikNCg0KV0hPX2xpZmVfZXhwZWN0YW5jeV8yMDE2IDwtIFdIT19saWZlX2V4cGVjdGFuY3kgJT4lIA0KICBmaWx0ZXIoeWVhciA9PSAiMjAxNiIsDQogICAgICAgICBzZXggPT0gIkJvdGggc2V4ZXMiKSANCg0KY29tYmluZSA8LSBsZWZ0X2pvaW4oV0hPX21ldGEgLCBXSE9fbGlmZV9leHBlY3RhbmN5XzIwMTYsIGJ5ID0gYygiWDMiID0gImNvdW50cnkiKSkNCg0KY29tYmluZV93b3JsZCA8LSBsZWZ0X2pvaW4od29ybGRfbWFwLCBjb21iaW5lLCBieSA9IGMoImlzb19hMyIgPSAiWDIiKSkNCmBgYA0KDQojIyMgRXhlcmNpc2UgNA0KDQpgYGB7cn0NCm15X21hcF90aGVtZSA8LSBmdW5jdGlvbigpew0KICB0aGVtZShwYW5lbC5iYWNrZ3JvdW5kPWVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgYXhpcy50ZXh0PWVsZW1lbnRfYmxhbmsoKSwNCiAgICAgICAgYXhpcy50aWNrcz1lbGVtZW50X2JsYW5rKCksDQogICAgICAgIGF4aXMudGl0bGU9ZWxlbWVudF9ibGFuaygpKQ0KfQ0KcCA8LSBjb21iaW5lX3dvcmxkICU+JQ0KICBtdXRhdGUodGV4dCA9IHBhc3RlKCI8Yj4iLGFkbWluLCI8L2I+XG5IZWFsdGh5IExpZmUgRXhwZWN0YW5jeToiLCBIQUxFYmlydGgpKSAlPiUNCiAgZ2dwbG90KCkrDQogIGdlb21fc2YoYWVzKGZpbGw9SEFMRWJpcnRoK3J1bmlmKG5yb3coY29tYmluZV93b3JsZCksIG1pbj0wLCBtYXg9MC4wMDA1KSwgdGV4dD10ZXh0KSwgY29sb3I9ImJsYWNrIikgKw0KICBzY2FsZV9maWxsX2NvbnRpbnVvdXMoIkhlYWx0aHkgTGlmZVxuRXhwZWN0YW5jeVxuYXQgQmlydGggKHllYXJzKSIsIGxvdz0gInJlZCIsIGhpZ2g9ImJsdWV2aW9sZXQiLGJyZWFrcz1jKDQ1LDU1LDY1LDc1KSkgKw0KICBsYWJzKHRpdGxlID0gIkhlYWx0aHkgTGlmZSBFeHBlY3RhbmN5XG5hdCBCaXJ0aCAyMDE2IikgKw0KICBteV9tYXBfdGhlbWUoKQ0KDQpwDQpgYGANCiMjIyBFeGVyY2lzZSA1DQoNCmBgYHtyfQ0KZ2dwbG90bHkocCwgdG9vbHRpcCA9ICJ0ZXh0IikgJT4lDQogIHN0eWxlKGhvdmVyb24gPSAiZmlsbHMiKQ0KYGBgDQoNCg==